from django.core.management.base import BaseCommand
from catalog.models import Author, Genre, Language, Book, BookInstance
from django.contrib.auth.models import User
from datetime import date, timedelta

class Command(BaseCommand):
    help = '初始化图书馆测试数据'

    def handle(self, *args, **kwargs):
        # 清理现有数据
        self.stdout.write('清理现有数据...')
        Author.objects.all().delete()
        Genre.objects.all().delete()
        Language.objects.all().delete()
        Book.objects.all().delete()
        BookInstance.objects.all().delete()

        # 创建语言
        self.stdout.write('创建语言...')
        chinese = Language.objects.create(name='中文')
        english = Language.objects.create(name='英文')
        japanese = Language.objects.create(name='日文')

        # 创建类型
        self.stdout.write('创建图书类型...')
        genres = {
            '科幻': Genre.objects.create(name='科幻'),
            '奇幻': Genre.objects.create(name='奇幻'),
            '文学': Genre.objects.create(name='文学'),
            '历史': Genre.objects.create(name='历史'),
            '技术': Genre.objects.create(name='技术'),
            '哲学': Genre.objects.create(name='哲学'),
            '心理学': Genre.objects.create(name='心理学'),
        }

        # 创建作者
        self.stdout.write('创建作者...')
        authors = [
            Author.objects.create(
                name='余华',
                date_of_birth=date(1960, 4, 3),
                bio='中国作家，代表作《活着》'
            ),
            Author.objects.create(
                name='马尔克斯',
                date_of_birth=date(1927, 3, 6),
                bio='哥伦比亚作家，代表作《百年孤独》'
            ),
            Author.objects.create(
                name='曹雪芹',
                date_of_birth=date(1715, 6, 4),
                bio='中国清代小说家，代表作《红楼梦》'
            ),
            Author.objects.create(
                name='吴承恩',
                date_of_birth=date(1500, 1, 1),
                bio='python manage.py makemigrations'
            ),
            # 新增《三国演义》作者
            Author.objects.create(
                name='罗贯中',
                date_of_birth=date(1330, 1, 1),  # 罗贯中具体出生日期不详
                bio='中国元末明初小说家，代表作《三国演义》'
            ),
        ]

        # 创建图书
        self.stdout.write('创建图书...')
        books = [
            {
                'title': '活着',
                'author': authors[0],
                'summary': '讲述了农村人福贵悲惨的人生遭遇。福贵少年时代因为嗜赌成性，终于赌光了家业。',
                'isbn': '9787506365437',
                'language': chinese,
                'genres': [genres['文学']],
            },
            {
                'title': '百年孤独',
                'author': authors[1],
                'summary': '讲述了布恩迪亚家族七代人的传奇故事，以及加勒比海沿岸小镇马孔多的百年兴衰。',
                'isbn': '9787544258975',
                'language': chinese,
                'genres': [genres['文学']],
            },
            {
                'title': '红楼梦',
                'author': authors[2],
                'summary': '中国古典四大名著之一，以贾、史、王、薛四大家族的兴衰为背景，以贾宝玉与林黛玉的爱情悲剧为主线。',
                'isbn': '9787020002207',
                'language': chinese,
                'genres': [genres['文学']],
            },
            {
                'title': '西游记',
                'author': authors[3],
                'summary': '中国古典四大名著之一，描写了孙悟空、猪八戒、沙僧辅佐唐僧西行取经，历经九九八十一难的故事。',
                'isbn': '9787020008735',
                'language': chinese,
                'genres': [genres['文学']],
            },
            # 新增《三国演义》
            {
                'title': '三国演义',
                'author': authors[4],  # 罗贯中
                'summary': '中国古典四大名著之一，描写了从东汉末年到西晋初年之间近百年的历史风云，以描写战争为主。',
                'isbn': '9787020008728',
                'language': chinese,
                'genres': [genres['文学']],
            },
        ]

        for book_data in books:
            book = Book.objects.create(
                title=book_data['title'],
                author=book_data['author'],
                summary=book_data['summary'],
                isbn=book_data['isbn'],
                language=book_data['language']
            )
            book.genre.set(book_data['genres'])

            # 为每本书创建3个副本
            for i in range(3):
                BookInstance.objects.create(
                    book=book,
                    imprint=f'2024年第{i + 1}版',
                    status='a'
                )
        self.stdout.write(self.style.SUCCESS('成功初始化测试数据！')) 